package com.service.user;

import com.entity.Goods;
import com.entity.Order;

import org.springframework.web.multipart.MultipartFile;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**  */
public interface SellerService {
  /**
   * 添加商品
   *
   * @param userId 用户名
   * @param name 书名 不为空
   * @param file 封面图片（只能是jpg/jpeg/png/gif格式的图片文件) 不为空
   * @param price 价格 不为空
   * @param appearance 品相 不为空
   * @param ISBN ISBN码
   * @param categoryId 类别编号，不为空
   * @param author 作者
   * @param translator 译者
   * @param version 版本号
   * @param store 库存
   * @param freight 邮费，不为空
   * @param pressHorse 出版社
   * @param publicationDate 出版日期
   * @param describe 商品描述
   * @param status 商品状态（1为直接上架，0为不上架)
   * @return 添加成功返回书籍编号和书籍封面图片url，否则返回null
   */
  Map<String, String> addAGoods(
      String userId,
      String name,
      MultipartFile file,
      float price,
      String appearance,
      String ISBN,
      int categoryId,
      String author,
      String translator,
      String version,
      int store,
      float freight,
      String pressHorse,
      Date publicationDate,
      String describe,
      int status);

  /**
   * 添加商品更多图片或视频描述，每个商品最多允许添加5个描述，单个描述不超过20MB
   *
   * @param userId 用户编号
   * @param goodId 商品编号
   * @param files 文件列表(只能是图片或视频）
   * @return 添加成功文件的url列表
   */
  List<String> addGoodsMoreFiles(String userId, String goodId, MultipartFile[] files);

  /**
   * 获取卖家自己的商品
   *
   * @param userId 用户编号
   * @param goodStatus 商品状态
   * @return 卖家的对应状态的对应页的商品列表
   */
  int getMyGoodCount(String userId, int goodStatus);

  /**
   * 获取卖家自己的商品
   *
   * @param userId 用户编号
   * @param goodsStatus 商品状态
   * @param pageSize 页大小
   * @param pageIndex 页索引
   * @return 卖家的对应状态的对应页的商品列表
   */
  List<Goods> getMyGoods(String userId, int goodsStatus, int pageSize, int pageIndex);

  Goods getMyGoodDetail(String userId, String goodId);

  int chGoodInfo(
      String userId,
      String goodId,
      String name,
      float price,
      String appearance,
      String ISBN,
      int categoryId,
      String author,
      String translator,
      String version,
      int store,
      float freight,
      String pressHorse,
      Date publicationDate,
      String describe);

  /**
   * 修改商品封面图片
   *
   * @param userId 用户编号
   * @param goodId 商品编号
   * @param file 图片文件
   * @return 修改成功返回url, 失败返回null
   */
  String chGoodCoverImage(String userId, String goodId, MultipartFile file);

  /**
   * 删除商品更多图片或视频
   *
   * @param userId 用户编号
   * @param goodId 商品编号
   * @param fileURL 要删除的文件的url
   * @return 删除成功返回1，否则返回0
   */
  int delGoodMoreFile(String userId, String goodId, String fileURL);

  /**
   * 上架书籍
   *
   * @param userId 用户编号
   * @param goodId 商品编号
   * @return 修改成功返回1，否则返回0
   */
  int putOnGood(String userId, String goodId);

  /**
   * 下架书籍
   *
   * @param userId 用户编号
   * @param goodId 商品编号
   * @return 修改成功返回1，否则返回0
   */
  int putOffGood(String userId, String goodId);

  /**
   * 删除商品
   *
   * @param userId 用户编号
   * @param goodId 商品编号
   * @return 删除成功返回1，否则返回0
   */
  int delGood(String userId, String goodId);

  /**
   * 获取卖家卖书订单的数量
   *
   * @param userId 用户编号
   * @param orderStatus 订单状态
   * @return 卖家对应状态的订单数量
   */
  int getSellOrderCount(String userId, int orderStatus);

  /**
   * 获取卖书订单
   *
   * @param userId 用户编号
   * @param orderStatus 订单状态
   * @param pageSize 页大小
   * @param pageIndex 页索引
   * @return 该用户对应页对应状态的卖书订单列表
   */
  List<Order> getMyOrders(String userId, int orderStatus, int pageSize, int pageIndex);

  /**
   * 确认发货，通知买家
   *
   * @param orderId 订单编号
   * @return 1/0
   */
  int confirmDelivery(String orderId, String courierCompany, String courierNumber);
}
